package com.example.helloworld;

// 内部类
//class OuterClass {
//    int x = 10;
//     class InnerClass {
//        int y = 10;
//    }
//}
//
//public class HelloWorld {
//    public static void main(String[] args) {
////        OuterClass myOuter = new OuterClass();
////        OuterClass.InnerClass myInner = myOuter.new InnerClass();
////        System.out.println(myInner.y + myOuter.x);
//
////        new 外部类
//        OuterClass myOuter = new OuterClass();
//        OuterClass.InnerClass myInner = myOuter.new InnerClass();
//        System.out.println(myOuter.x + myInner.y);
//
////        System.out.println("hello world");
//    }
//}

// 静态内部类
//class OuterClass{
//    int x = 20;
//    static class InnerClass{
//        int y = 40;
//    }
//}
//
//public class HelloWorld{
//    public static void main(String[] args){
//        OuterClass.InnerClass myInnerClass = new OuterClass.InnerClass();
//        System.out.println(myInnerClass.y);
//    }
//}

// 从内部类访问外部类成员
class OuterClass {
//    int x = 30;
//    byte x = -100;
//    short x = 1000;
//    long x = 10000;
//    float x = 234.5f;
//    double x = 123.123;
//    boolean x = false;
//    char x = '邓';
//    byte x = Byte.MIN_VALUE; -128
//    byte x = Byte.MAX_VALUE; 127
//    long x = Long.SIZE;
//    byte a = 68;
//    char a = 'A';
//    int i = 128;
//    byte b = (byte)i; // byte最大值127，i的值128强制转换会导致内存泄漏 -128
    // 声明一个类变量,static关键字声明
    static int OuterInt;  // 类变量
    class InnerClass{
        int instanceVar; // 实例变量， 在构造器和方法外，如何没有赋值将会生成默认值,数值类型为0，boolean类型为false，对象引用类型为null）。
        // 方法
//        public byte myInnerMethod(){
//            return b;
//        }
        public int myInnergetI(){
            int i = 10; // 需要初始化变量，否则报错
            return instanceVar;
        }
    }

    // int=32 byte=8 short=16 long=64
}

public class HelloWorld {
    public static void main(String[] args) {
        OuterClass myouter = new OuterClass();
        OuterClass.InnerClass myinner = myouter.new InnerClass();
        System.out.println(myinner.myInnergetI());

//        char c1 ='a';//定义一个char类型
//        int i1 = c1;//char自动类型转换为int
//        System.out.println("char自动类型转换为int后的值等于"+i1);

    }
}
